<?php

/**
 * Classe para abstrair algumas operações de geração de CSV.
 *
 * @author Hyzandey
 */
class CSVGenerator {
    
    const SEPARADOR_PADRAO = ';';
    const QUEBRA_LINHA_PADRAO = "\n";
    const CODIFICACAO_WINDOWS = 'Windows-1252';
    const CODIFICACAO_INTERNA = 'UTF-8';
    
    private $separator = self::SEPARADOR_PADRAO;
    private $lineBreak = self::QUEBRA_LINHA_PADRAO;
    private $encoding = self::CODIFICACAO_WINDOWS;

    /**
     * Insere uma nova linha de acordo com o array de valores recebido.
     * 
     * @param array $row [index=>int, value=>string] array de índice numérico
     * com o conjunto de valores a serem inseridos na linha.
     */
    public function echoRow($row) {
        
        $CSVString = "";

        $columnCount = count($row);

        for ($i = 0; $i < $columnCount; $i++) {
        	 
        	$rowValue = $row[$i];
        	 
        	$rowValue = str_replace("\"", "\"\"", $rowValue);

        	$CSVString .= "\"$rowValue\"";

        	if ($i < $columnCount - 1) {
        		$CSVString .= $this->separator;
        	}
        }
        
        $CSVString.="\n";
        
        echo mb_convert_encoding($CSVString, $this->encoding
        		, self::CODIFICACAO_INTERNA);
    }

}

?>